home *** CD-ROM | disk | FTP | other *** search
- (*****************************************************************************)
- (* *)
- (* HexConv *)
- (* *)
- (* 10/25/95 *)
- (* Randall L. Hyde *)
- (* Copyright 1995, All Rights Reserved Unless Otherwise Noted *)
- (* *)
- (* This program allows the user to enter data in signed decimal, unsigned *)
- (* decimal, unsigned hexadecimal, and unsigned binary formats (all 16 bits). *)
- (* It automatically converts an input in one radix to its corresponding *)
- (* representation in the other bases. *)
- (* *)
- (* Runs under Windows 3.1, Windows 95, and Windows NT. *)
- (* Source Code: Borland Delphi (object Pascal). *)
- (* *)
- (*****************************************************************************)
-
-
- unit Hexconvu;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, StdCtrls, ExtCtrls, Converts;
-
- type
-
- { Class definition for the conversion form }
-
- THexConv = class(TForm)
- BoundingBox: TGroupBox;
-
- BinLabel: TLabel;
- HexLabel: TLabel;
- DecLabel: TLabel;
- UnsignedDecLbl: TLabel;
-
- BinEntry: TEdit; { Box into which the user enters binary data }
- HexEntry: TEdit; { Box into which the user enters hexadecimal data }
- DecEntry: TEdit; { Box into which the user enters signed decimal data }
- UnsignedEntry: TEdit;{ Box into which the user enters unsigned data }
-
- ExitBtn: TButton;
- ClearBtn: TButton;
- AboutBtn: TButton;
-
- procedure ExitBtnClick(Sender: TObject);
- procedure ClearBtnClick(Sender: TObject);
- procedure AboutBtnClick(Sender: TObject);
- procedure DecEntryKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
- procedure HexEntryKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
- procedure BinEntryKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
- procedure UnsignedEntryKeyUp( Sender: TObject;
- var Key: Word;
- Shift: TShiftState
- );
- procedure BoundingBoxClick(Sender: TObject);
-
- end;
-
-
-
-
- {Instance variable for this form }
-
- var
- HexConv: THexConv;
-
-
-
-
- implementation
-
- {$R *.DFM}
-
-
-
- { When the user presses the Quit button, the following method terminates }
- { the program. }
-
- procedure THexConv.ExitBtnClick(Sender: TObject);
- begin
- Halt;
- end;
-
- { If the user presses the clear button, the following method sets all the }
- { fields to zeros. }
-
- procedure THexConv.ClearBtnClick(Sender: TObject);
- begin
-
- DecEntry.Text := '0';
- UnsignedEntry.Text := '0';
- HexEntry.Text := '0000';
- BinEntry.Text := '0000 0000 0000 0000';
-
- end;
-
-
-
- { When the user presses (and releases) a key inside the decimal entry }
- { text box, the following method checks the resulting string to see if it }
- { is a valid decimal integer value. If so, this method updates the }
- { strings in all the edit boxes to reflect the new value. If the result- }
- { ing value is invalid, the following method turns the decimal data entry }
- { box red. }
-
- procedure THexConv.DecEntryKeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- var Value:integer;
- begin
-
- if (CheckDec(DecEntry.Text)) then begin { Legal decimal value }
-
- Value := StrToInt(DecEntry.Text); {Convert string to integer }
-
- { Update the strings in the other three data entry boxes. }
-
- HexEntry.Text := IntToHex(Value,4);
- BinEntry.Text := IntToBin(Value,16);
- UnsignedEntry.Text := IntToStr(word(Value));
-
- { Change the color back to normal in case it was red before. }
- { Red denotes an error, a condition that no longer exists. }
-
- DecEntry.Color := clWindow;
-
- end
- else begin { Illegal decimal value }
-
- { If we have an illegal decimal value, beep the speaker and turn }
- { the background color in the text entry box to red. }
-
- MessageBeep($ffff);
- DecEntry.Color := clRed;
-
- end;
-
- end;
-
-
- { The following method processes keystrokes in the unsigned decimal entry }
- { box. This routine is nearly identical to the DecEntryKeyUp event method.}
- { Please see the comments in that routine for more details. }
-
- procedure THexConv.UnsignedEntryKeyUp( Sender: TObject;
- var Key: Word;
- Shift: TShiftState);
- var Value:word;
- begin
-
- if (CheckUnsigned(UnsignedEntry.Text)) then begin
-
- Value := StrToInt(UnsignedEntry.Text);
- HexEntry.Text := IntToHex(Value,4);
- DecEntry.Text := IntToStr(integer(Value));
- BinEntry.Text := IntToBin(Value,16);
- UnsignedEntry.Color := clWindow;
-
- end
- else begin
-
- MessageBeep($ffff);
- UnsignedEntry.Color := clRed;
-
- end;
-
- end;
-
-
- { The following method processes keystrokes in the hexadecimal entry }
- { box. This routine is nearly identical to the DecEntryKeyUp event method.}
- { Please see the comments in that routine for more details. }
-
- procedure THexConv.HexEntryKeyUp(Sender: TObject;
- var Key: Word;
- Shift: TShiftState);
- var value:integer;
- begin
-
- if (CheckHex(HexEntry.Text)) then begin
-
- Value := HexToInt(HexEntry.Text);
- DecEntry.Text := IntToStr(Value);
- BinEntry.Text := IntToBin(Value,16);
- UnsignedEntry.Text := IntToStr(word(Value));
- HexEntry.Color := clWindow;
-
- end
- else begin
-
- MessageBeep($ffff);
- HexEntry.Color := clRed;
-
- end;
-
- end;
-
-
-
- { The following method processes keystrokes in the binary data entry }
- { box. This routine is nearly identical to the DecEntryKeyUp event method.}
- { Please see the comments in that routine for more details. }
-
- procedure THexConv.BinEntryKeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- var value:integer;
- begin
-
- if (CheckBin(BinEntry.Text)) then begin
-
- Value := BinToInt(BinEntry.Text);
- DecEntry.Text := IntToStr(Value);
- HexEntry.Text := IntToHex(Value,4);
- UnsignedEntry.Text := IntToStr(word(Value));
- BinEntry.Color := clWindow;
-
- end
- else begin
-
- MessageBeep($ffff);
- BinEntry.Color := clRed;
-
- end;
-
- end;
-
-
-
-
- { Pressing the 'about' button brings up a dialog box with the copyright }
- { information. }
-
- procedure THexConv.AboutBtnClick(Sender: TObject);
- begin
-
- MessageDlg(
- 'Hex/Decimal/Binary Converter, Copyright 1995 by Randall Hyde',
- mtInformation, [mbOk], 0);
-
- end;
-
- procedure THexConv.BoundingBoxClick(Sender: TObject);
- var value:word;
- begin
- Value := word(BinToInt(BinEntry.Text));
- BinEntry.Text := IntToBin(Value,16);
- DecEntry.Text := IntToStr(integer(Value));
- HexEntry.Text := IntToHex(Value,4);
- UnsignedEntry.Text := IntToStr(word(Value));
-
- end;
-
- end.
-